;实验14 访问cmos RAM 

assume cs:code

code segment
start:
        ;显示年
        ;读取
        mov al,9
        out 70h,al
        in al,71h
        ;分开处理
        mov ah,al
        ;高位
        mov cl,4
        shr ah,cl
        add ah,30h
        ;低位
        and al,00001111b
        add al,30h

        ;显示
        mov bx,0b800h
        mov ds,bx

        mov byte ptr ds:[12*160+35*2],ah
        mov byte ptr ds:[12*160+35*2+2],al
        mov byte ptr ds:[12*160+35*2+4],'/'


        ;显示月
        ;读取
        mov al,8
        out 70h,al
        in al,71h
        ;分开处理
        mov ah,al
        ;高位
        mov cl,4
        shr ah,cl
        add ah,30h
        ;低位
        and al,00001111b
        add al,30h

        ;显示
        mov bx,0b800h
        mov ds,bx

        mov ds:[12*160+35*2+6],ah
        mov ds:[12*160+35*2+8],al
        mov byte ptr ds:[12*160+35*2+10],'/'


        ;显示日
        ;读取
        mov al,7
        out 70h,al
        in al,71h
        ;分开处理
        mov ah,al
        ;高位
        mov cl,4
        shr ah,cl
        add ah,30h
        ;低位
        and al,00001111b
        add al,30h

        ;显示
        mov bx,0b800h
        mov ds,bx

        mov ds:[12*160+35*2+12],ah
        mov ds:[12*160+35*2+14],al
        mov byte ptr ds:[12*160+35*2+16],' '


        ;显示时
        ;读取
        mov al,4
        out 70h,al
        in al,71h
        ;分开处理
        mov ah,al
        ;高位
        mov cl,4
        shr ah,cl
        add ah,30h
        ;低位
        and al,00001111b
        add al,30h

        ;显示
        mov bx,0b800h
        mov ds,bx

        mov ds:[12*160+35*2+18],ah
        mov ds:[12*160+35*2+20],al
        mov byte ptr ds:[12*160+35*2+22],':'

        ;显示分
        ;读取
        mov al,2
        out 70h,al
        in al,71h
        ;分开处理
        mov ah,al
        ;高位
        mov cl,4
        shr ah,cl
        add ah,30h
        ;低位
        and al,00001111b
        add al,30h

        ;显示
        mov bx,0b800h
        mov ds,bx

        mov ds:[12*160+35*2+24],ah
        mov ds:[12*160+35*2+26],al
        mov byte ptr ds:[12*160+35*2+28],':'

        ;显示秒
        ;读取
        mov al,0
        out 70h,al
        in al,71h
        ;分开处理
        mov ah,al
        ;高位
        mov cl,4
        shr ah,cl
        add ah,30h
        ;低位
        and al,00001111b
        add al,30h

        ;显示
        mov bx,0b800h
        mov ds,bx

        mov ds:[12*160+35*2+30],ah
        mov ds:[12*160+35*2+32],al
      

        mov ax,4c00h
        int 21h
        

code ends

end start
